package py.progweb.sgc.gui.client.dialog;

import java.util.List;

import py.progweb.sgc.gui.client.widget.DescCampo;
import py.progweb.sgc.gui.client.widget.TablaFiltro;
import py.progweb.sgc.gui.client.widget.ToolbarListado;
import py.progweb.sgc.gui.shared.dialogmodel.*;
import py.progweb.sgc.model.Cajero;

import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class ListadoCajeros extends ListadoBase {
			
	
	public ListadoCajeros() {
		super("Listado de Cajeros");
		
		setWidth(500);
		setHeight(400);				
		
		ToolbarListado toolbar = new ToolbarListado(this);
		
		this.addItem(toolbar);
		
		cargarDatos();
	}

	@Override
	public void reset() {
		tabla.clearCriteria();	
		cargarDatos();
	}

	@Override
	public void nuevo() {		
		DialogFactory.showDialog(this, DialogFactory.DLG_FORMULARIO_CAJEROS);
	}

	@Override
	public void modificar() {
		List<DataRecord> items = tabla.getFilasSeleccionadas();
		
		if (items.size() != 1) {
			Window.alert("Debe seleccionar una sola fila para modificarla");
			return;
		}
		
		FormularioCajeros form = (FormularioCajeros)DialogFactory.showDialog(this, DialogFactory.DLG_FORMULARIO_CAJEROS);
		form.setData(items.get(0));
	}
	
	@Override
	public void eliminar() {
		List<DataRecord> items = tabla.getFilasSeleccionadas();
		
		for(DataRecord item: items){
			item.setClassName(Cajero.class.getName());
			item.setPK((Integer)item.getAtributo("codUsuario"));
		}
		abmService.borrar(items, new AsyncCallback<Void>() {
			
			@Override
			public void onSuccess(Void result) {
				Window.alert("Los items han sido borrados");
				reset();
			}
			
			@Override
			public void onFailure(Throwable caught) {
				manejarError(caught);
			}
		});
	}

	public void cargarDatos() {
		service.getCajerosListadoModel(new AsyncCallback<CajerosModel>() {
			
			@Override
			public void onSuccess(CajerosModel result) {
				if (tabla != null)
					ListadoCajeros.this.removeItem(tabla);
				
				tabla = new TablaFiltro(result.getRecords(), 
										new DescCampo("codUsuario","Codigo"),
										new DescCampo("username","Username"),
										new DescCampo("cedula","Cedula"),
										new DescCampo("nombre","Nombre"),
										new DescCampo("apellido","Apellido"),
										new DescCampo("direccion","Direccion"),
										new DescCampo("telefono","Telefono"),
										new DescCampo("caja.codCajaPk","Caja")
									   );
												
				ListadoCajeros.this.addItem(tabla);					
				tabla.setHeight(400);
			}
			
			@Override
			public void onFailure(Throwable caught) {
				manejarError(caught);
			}
		});
	}
}

